<template>
  <!-- <div>
    <div id="container">
      <div id="panel"></div>
    </div>
  </div> -->
  <div class="map-content">
    <div id="container" class="map"></div>
    <div id="panel" @click="routePlanning">测试按钮</div>
  </div>
  <!-- <div class="info">
    <div class="input-item">
      <div class="input-item-prepend">
        <span class="input-item-text" style="width:8rem;">请输入关键字</span>
      </div>
      <input id='tipinput' type="text">
    </div> -->
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
  // 设置安全密钥
  securityJsCode: "",
};
//下载自官网示例数据  http://a.amap.com/Loca/static/mock/districts.js
const districts = [];
export default {
  data() {
    return {
      map: "",
      path1: [],
      path2: [],
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      AMapLoader.load({
        key: "", // 申请好的Web端开发者Key，首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
        plugins: [
          "AMap.Scale", // 比例尺
          "AMap.Transfer",
          "AMap.StationSearch",
          "AMap.ToolBar", // 添加右下角的放大缩小
          "AMap.Driving",
          "AMap.PlaceSearch",
          "AMap.Geolocation",
          "AMap.HawkEye", // 鹰眼，显示缩略图
          "AMap.MapType", // 添加右上角的标准图和卫星图  和路况
          "AMap.Weather",
          "AMap.controlBar", // 方向盘
        ], // 需要使用的的插件列表，如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map("container", {
            viewMode: "2D", //  是否为3D地图模式
            zoom: 13, // 初始化地图级别
            center: [113.65553, 34.748764], //中心点坐标  郑州
            resizeEnable: true,
            isHotspot: true, // 开启地图的热点功能 (站点详情)
          });
          this.siteDetails();
          // 地图加载完成事件
          this.map.on("complete", function () {
            let a = 'abcdefg,'
            a = a.replace(/[abc,]/gi, '')
            console.log(a);
            console.log("地图加载完成！");
          });

          // showIndoorMap: false, // 是否在有矢量底图的时候自动展示室内地图，PC默认true,移动端默认false
          // dragEnable: false, // 地图是否可通过鼠标拖拽平移，默认为true
          // keyboardEnable: false, //地图是否可通过键盘控制，默认为true
          // doubleClickZoom: false, // 地图是否可通过双击鼠标放大地图，默认为true
          // zoomEnable: false, //地图是否可缩放，默认值为true
          // rotateEnable: false, // 地图是否可旋转，3D视图默认为true，2D视图默认false

          // 交互控制
          // this.map.setStatus({
          //   dragEnable: true,
          //   keyboardEnable: true,
          //   doubleClickZoom: true,
          //   zoomEnable: true,
          //   rotateEnable: true,
          // });

          //使用CSS默认样式定义地图上的鼠标样式
          this.map.setDefaultCursor("pointer");

          // 点击获取经纬度
          this.map.on("click", function (e) {
            console.log("经度", e.lnglat.getLng());
            console.log("纬度", e.lnglat.getLat());
          });
          this.map.addControl(new AMap.ToolBar());
          this.map.addControl(new AMap.MapType());
          this.map.addControl(new AMap.Scale());
          // this.map.addControl(new AMap.Transfer())
          this.map.addControl(new AMap.Geolocation());
          this.map.addControl(new AMap.HawkEye());
          // this.map.addControl(new AMap.controlBar()) // 方向盘
          // this.map.addControl(new AMap.StationSearch())
          // this.getRoute() // 获取线路规划
          var geolocation = new AMap.Geolocation({
            // 是否使用高精度定位，默认：true
            enableHighAccuracy: true,
            // 设置定位超时时间，默认：无穷大
            timeout: 10000,
            // 定位按钮的停靠位置的偏移量，默认：Pixel(10, 20)
            buttonOffset: new AMap.Pixel(10, 20),
            //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
            zoomToAccuracy: true,
            //  定位按钮的排放位置,  RB表示右下
            buttonPosition: "RB",
          });
          geolocation.getCurrentPosition(function (status, result) {
            console.log(status, result);
            if (status == "complete") {
              onComplete(result);
            } else {
              onError(result);
            }
          });

          function onComplete(data) {
            // data是具体的定位信息
          }

          function onError(data) {
            // 定位出错
          }
        })
        .catch((e) => {
          // console.log(e)
        });
    },
    // ----------------------------------------------------------------
    //地图移动与缩放事件
    logMapinfo() {
      // 移动事件
      this.map.on("moveend", () => {
        console.log("当前地图级别", this.map.getZoom());
        // lng, lat 代表经纬度
        console.log("当前地图中心位置", this.map.getCenter());
      });
      // 缩放事件
      this.map.on("zoomend", () => {
        console.log("当前地图级别", this.map.getZoom());
        console.log("当前地图中心位置", this.map.getCenter());
      });
    },
    // 设置经纬度
    steupMap() {
      this.map.setCenter([lng, lat]); //设置地图中心点
      this.map.setZoom(zoom); //设置地图层级
    },
    // 获取地图当前行政区
    getMapCity() {
      this.map.getCity((e) => {
        console.log("当前行政区", e);
      });
    },
    // 设置地图当前行政区
    setCityMap() {
      //可以是cityname、adcode、citycode
      // 现在默认郑州市  输入对应行政区  可模糊输入
      this.map.setCity("北京市");
    },
    // 设置/获取地图显示范围
    rangeMap() {
      console.log("获取", this.map.getBounds());
      // 设置
      var mybounds = new AMap.Bounds(
        [116.319665, 39.855919],
        [116.468324, 39.9756]
      );
      this.map.setBounds(mybounds);
    },
    //限制/取消地图显示范围
    lockMapBounds() {
      //获取地图显示范围
      var bounds = this.map.getBounds();
      //限制地图显示范围
      this.map.setLimitBounds(bounds);
      //取消地图显示限制
      this.map.clearLimitBounds();
    },
    // 地图的平移
    translation() {
      // 平移像素值
      // this.map.panBy(50, 100);
      // 移至指定位置
      //  map.panTo([116.405467, 39.907761]);
    },
    // 地图的热点功能 (站点详情)
    siteDetails() {
      // let placeSearch = new AMap.PlaceSearch(); //构造地点查询类
      // let infoWindow = new AMap.InfoWindow({}); //创建信息窗体
      // let maps = this.map;
      // //鼠标经过
      // this.map.on("hotspotover", function (result) {
      //   placeSearch.getDetails(result.id, function (status, result) {
      //     if (status === "complete" && result.info === "OK") {
      //       let poiArr = result.poiList.pois;
      //       let location = poiArr[0].location;
      //       //信息窗体内容
      //       let dialog = [];
      //       dialog.push(
      //         '<div class="info-title">' +
      //           poiArr[0].name +
      //           '</div><div class="info-content">' +
      //           "地址：" +
      //           poiArr[0].address
      //       );
      //       dialog.push("电话：" + poiArr[0].tel);
      //       dialog.push("类型：" + poiArr[0].type);
      //       dialog.push("<div>");
      //       dialog.join("<br>");
      //       // 向信息框体添加内容
      //       infoWindow.setContent(dialog);
      //       // 打开信息框体
      //       infoWindow.open(maps, location);
      //     }
      //   });
      // });
    },
    // 构造点标记/矢量圆形
    signMap() {
      // 构造点标记
      let marker = new AMap.Marker({
        // 标记的样式
        icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
        // 标记点的经纬度
        position: [113.65553, 34.748764],
        anchor: "bottom-center",
      });
      // 构造矢量圆形
      var circle = new AMap.Circle({
        center: new AMap.LngLat("113.65553", "34.748764"), // 圆心位置
        radius: 1000, //半径
        strokeColor: "#F33", //线颜色
        strokeOpacity: 1, //线透明度
        strokeWeight: 3, //线粗细度
        fillColor: "#ee2200", //填充颜色
        fillOpacity: 0.35, //填充透明度
      });
      // 添加标记
      this.map.add(marker);
      this.map.add(circle);
      // 移除标记
      // this.map.remove(marker);
      // this.map.remove(circle);
      // 自动适配到合适视野范围
      // 无参数，默认包括所有覆盖物的情况
      this.map.setFitView();
    },
    // 路线规划
    routePlanning() {
      //构造路线导航类
      var driving = new AMap.Driving({
        map: this.map,
        panel: "panel",
      });
      // 根据起终点名称规划驾车导航路线
      driving.search(
        [
          { keyword: "郑州动物园(公交站)", city: "郑州" },
          { keyword: "郑州人民公园(地铁站)", city: "郑州" },
        ],
        function (status, result) {
          // result 即是对应的驾车导航信息，相关数据结构文档请参考  https://lbs.amap.com/api/javascript-api/reference/route-search#m_DrivingResult
          if (status === "complete") {
            console.log("绘制驾车路线完成");
          } else {
            console.log("获取驾车数据失败：" + result);
          }
        }
      );
    },
  },
};
</script>

<style  scoped lang="less">
.map {
  height: 100vh;
}
.map-content {
  position: relative;
}
#panel {
  position: absolute;
  top: 0;
  right: 0;
  &:hover {
    cursor: pointer;
  }
}
.info-title {
  font-weight: bolder;
  color: #000;
  font-size: 14px;
  width: 250px;
  height: 250px;
  line-height: 26px;
  padding: 0 0 0 6px;
  background-color: pink;
}
.info-content {
  width: 250px;
  padding: 4px;
  color: #666666;
  line-height: 23px;
  font: 12px Helvetica, "Hiragino Sans GB", "Microsoft Yahei", "微软雅黑", Arial;
}
</style>